#include <iostream>
#include <exception>
#include <GL\glew.h>
#include "Jogador.h"
#include "CGFapplication.h"
#include "CenarioJogo.h"
#include "TPinterface.h"

using std::cout;
using std::exception;

int main(int argc, char* argv[])
{
	int opt = 0;
	do{
		cout << "Bem-vindo ao Tumbling Down!\n1 - J vs CPU\n2 - J vs J\n3 - CPU vs CPU\n4 - Sair\nQual a sua opcao?: ";
		do{
			cin >> opt;
		}while(!(opt > 0 && opt < 5));
		if(opt < 4)
		{
			string cpu;
			getline(cin,cpu);
			cpu = "CPU";
			vector<Jogador *> players;
			if(opt < 3)
			{
				if(opt == 1)
				{
					string nome;
					cout <<"Jogador: ";
					getline(cin, nome);
					Jogador* human1 = new Jogador(nome,true);
					Jogador* cpu1 = new Jogador(cpu,false);
					players.push_back(human1);
					players.push_back(cpu1);
				}
				else
				{
					string nome1;
					string nome2;
					cout << "Jogador 1: ";
					getline(cin,nome1);
					cout << "Jogador 2: ";
					getline(cin,nome2);
					Jogador* human1 = new Jogador(nome1,true);
					Jogador* human2 = new Jogador(nome2,true);
					players.push_back(human1);
					players.push_back(human2);
				}
			}
			else
			{
				Jogador* cpu1 = new Jogador(cpu,false);
				Jogador* cpu2 = new Jogador(cpu,false);
				players.push_back(cpu1);
				players.push_back(cpu2);
			}
			if(players.size() == 2)
			{
				system("pause");
				CGFapplication app = CGFapplication();
				try {
					app.init(&argc, argv);
					app.setScene(new CenarioJogo(players));
					app.setInterface(new TPinterface());
					app.run();
				}
				catch(GLexception& ex)
				{
					cout << "Erro: " << ex.what();
					return -1;
				}
				catch(exception& ex)
				{
					cout << "Erro inesperado: " << ex.what();
					return -1;
				}
			}
			else
			{
				cout << "Erro de configuracao." << endl;
				opt = 4;
			}
		}
	}while(opt != 4);
	cout << "O jogo vai encerrar." << endl;
	system("pause");
	return 0;
}